package com.hanhanxiaochong.zhongxiangchuanmei.util.glide;

import android.annotation.SuppressLint;
import android.content.Context;
import android.net.Uri;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;

import jp.wasabeef.glide.transformations.CropCircleTransformation;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;

/**
 * Created by QLY on 2016/6/22.
 */
public class GlideImgManager {

    /**
     * load normal  for img
     *
     * @param url
     * @param erroImg
     * @param emptyImg
     * @param iv
     */
    public static void glideLoader(Context context, String url, int erroImg, int emptyImg, ImageView iv) {
        RequestOptions options = new RequestOptions()
                .fitCenter()
                .placeholder(emptyImg)
                .error(erroImg)
                .priority(Priority.HIGH)
                .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC);
        //原生 API
        Glide.with(context).load(url).apply(options).into(iv);
    }

    /**
     * load normal  for img
     *
     * @param uri
     * @param erroImg
     * @param emptyImg
     * @param iv
     */
    public static void glideLoader(Context context, Uri uri, int erroImg, int emptyImg, ImageView iv) {
        RequestOptions options = new RequestOptions()
                .centerCrop()
                .placeholder(emptyImg)
                .error(erroImg)
                .priority(Priority.HIGH)
                .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC);
        //原生 API
        Glide.with(context).load(uri).apply(options).into(iv);
    }

    /**
     * load normal  for  circle or round img
     *
     * @param url
     * @param erroImg
     * @param emptyImg
     * @param iv
     * @param tag
     */
    @SuppressLint("CheckResult")
    public static void glideLoader(Context context, String url, int erroImg, int emptyImg, ImageView iv, int tag) {
        RequestOptions options = new RequestOptions()
                .centerCrop()
                .placeholder(emptyImg)
                .error(erroImg)
                .priority(Priority.HIGH)
                .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC);
        if (0 == tag) {
            options.bitmapTransform(new CropCircleTransformation());
            Glide.with(context).load(url).apply(options).into(iv);
        } else if (1 == tag) {
            options.bitmapTransform(new RoundedCornersTransformation(25, 0, RoundedCornersTransformation.CornerType.ALL));
            Glide.with(context).load(url).apply(options).into(iv);
        }
    }

//    /**
//     * load normal  for  circle or round img
//     *
//     * @param url
//     * @param erroImg
//     * @param emptyImg
//     * @param iv
//     * @param tag
//     */
//    public static void glideDynamicLoader(Context context, String url, int erroImg, int emptyImg, ImageView iv, int tag) {
//        Glide.with(context).load(url).placeholder(emptyImg).error(erroImg).transform(new GlideRoundTransform(context, 10)).into(iv);
//    }
//
//    /**
//     * 自适应宽度加载图片。保持图片的长宽比例不变，通过修改imageView的高度来完全显示图片。
//     */
//    public static void loadIntoUseFitWidth(Context context, final String imageUrl, int errorImageId, final ImageView imageView) {
//        Glide.with(context)
//                .load(imageUrl)
//                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
//                .listener(new RequestListener<String, GlideDrawable>() {
//                    @Override
//                    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
//                        return false;
//                    }
//
//                    @Override
//                    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
//                        if (imageView == null) {
//                            return false;
//                        }
//                        if (imageView.getScaleType() != ImageView.ScaleType.FIT_XY) {
//                            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
//                        }
//                        ViewGroup.LayoutParams params = imageView.getLayoutParams();
//                        int vw = imageView.getWidth() - imageView.getPaddingLeft() - imageView.getPaddingRight();
//                        float scale = (float) vw / (float) resource.getIntrinsicWidth();
//                        int vh = Math.round(resource.getIntrinsicHeight() * scale);
//                        params.height = vh + imageView.getPaddingTop() + imageView.getPaddingBottom();
//                        imageView.setLayoutParams(params);
//                        return false;
//                    }
//                })
//                .placeholder(errorImageId)
//                .error(errorImageId)
//                .into(imageView);
//    }
//
//    /**
//     * 自适应宽度加载图片。保持图片的长宽比例不变，通过修改imageView的高度来完全显示图片。
//     */
//    public static int GetIntoUseFitWidth(Context context, final String imageUrl, int errorImageId, final ImageView imageView) {
//        final int[] height = new int[1];
//        Glide.with(context)
//                .load(imageUrl)
//                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
//                .listener(new RequestListener<String, GlideDrawable>() {
//                    @Override
//                    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
//                        return false;
//                    }
//
//                    @Override
//                    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
//                        if (imageView == null) {
//                            return false;
//                        }
//                        ViewGroup.LayoutParams params = imageView.getLayoutParams();
//                        int vw = imageView.getWidth() - imageView.getPaddingLeft() - imageView.getPaddingRight();
//                        float scale = (float) vw / (float) resource.getIntrinsicWidth();
//                        int vh = Math.round(resource.getIntrinsicHeight() * scale);
//                        params.height = vh + imageView.getPaddingTop() + imageView.getPaddingBottom();
//                        height[0] = params.height;
//                        imageView.setLayoutParams(params);
//                        return false;
//                    }
//                })
//                .placeholder(errorImageId)
//                .error(errorImageId)
//                .into(imageView);
//        return height[0];
//    }
//
//    /**
//     * load normal  for  circle or round img
//     *
//     * @param url
//     * @param erroImg
//     * @param iv
//     */
//    public static void glideImageLoader(Context context, String url, int erroImg, ImageView iv) {
//        Glide.with(context).load(url).error(erroImg).transform(new GlideCircleTransform(context)).centerCrop().into(iv);
//    }
}